<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>menu</title>
    <link rel="stylesheet" href="../../lib/layui-v2.6.3/css/layui.css" media="all">
    <link rel="stylesheet" href="../../css/public.css" media="all">
    <style>
        .layui-btn:not(.layui-btn-lg ):not(.layui-btn-sm):not(.layui-btn-xs) {
            height: 34px;
            line-height: 34px;
            padding: 0 8px;
        }
        * { margin: 0; padding: 0; }
        body { font-size: 14px; color: #333; font-family: "Microsoft Yahei"; }
        ul, li { list-style-type: none; }

        #treeView {
            width: 600px;
            margin: 20px auto 0;
            border: 1px solid #f2f2f2;
        }
        .treeNode {
            height: 32px;
            border: 1px solid #fff;
            border-width: 1px 0;
            cursor: pointer;
            font-size: 0;
        }
        .treeNode:hover {
            background: #f4f9fd;
            border-color: #e5f0fb;
        }
        .treeNode-cur,
        .treeNode-cur:hover {
            background: #e5f0fb;
            border-color: #BBD4EF #fff;
        }
        .icon {
            display: inline-block;
            background: url(icon.png) no-repeat;
            vertical-align: middle;
        }
        .icon-minus {
            width: 15px;
            height: 15px;
            margin: 0 4px;
            background-position: -30px -22px;
        }
        .icon-add {
            width: 15px;
            height: 15px;
            margin: 0 4px;
            background-position: -30px 0;
        }
        .icon-file {
            width: 22px;
            height: 18px;
            margin-right: 5px;
            background-position: 0 -22px;
        }
        .title {
            position: relative;
            top: 6px;
            font-size: 14px;
        }

        .treeNode-empty .icon-minus {
            background-position: -999px -999px;
        }
        .treeNode-empty .icon-add {
            background-position: -999px -999px;
        }

        #treeView ul.none {
            display: none;
        }
    </style>
</head>
<body>

<div class="layui-container:1190px">
    <div class="layui-row">
        <div class="layui-col-md2">

            <div class="layuimini-container">
                <div class="layuimini-main" style="width: 90%;height: 760px">

                    <div id="treeView"></div>

                </div>
            </div>


        </div>
        <div class="layui-col-md10">

            <div class="layuimini-container">
                <div class="layuimini-main" style="width: 100%">

                    <fieldset class="table-search-fieldset">
                        <legend>搜索信息</legend>
                        <div style="margin: 10px 10px 10px 10px">
                            <form class="layui-form layui-form-pane"  onsubmit="return false;"  lay-filter="example" action="">
                                <div class="layui-form-item">
                                    <div class="layui-inline">
                                        <input type="hidden" name="channelId" disabled autocomplete="off" class="layui-input">
                                        <label class="layui-form-label">栏目名称</label>
                                        <div class="layui-input-inline">
                                            <input type="text" name="channelIdName" disabled autocomplete="off" class="layui-input">
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label">文章名称</label>
                                        <div class="layui-input-inline">
                                            <input type="text" name="title" autocomplete="off" class="layui-input">
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label">标签名称</label>
                                        <div class="layui-input-inline">
                                            <input type="text" name="tag" autocomplete="off" class="layui-input">
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label">作者名称</label>
                                        <div class="layui-input-inline">
                                            <input type="text" name="realname" autocomplete="off" class="layui-input">
                                        </div>
                                    </div>



                                    <div class="layui-inline">
                                        <button type="submit" class="layui-btn layui-btn-primary"  lay-submit lay-filter="data-search-btn"><i class="layui-icon"></i> 搜 索</button>
                                    </div>
                                </div>
                            </form>
                        </div>
                    </fieldset>

                    <script type="text/html" id="toolbarDemo">
                        <div class="layui-btn-container">
                            <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加 </button>
                            <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="addmarkerdown"> 添加markerdown </button>
                            <button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete"> 删除 </button>
                        </div>
                    </script>

                    <table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>

                    <script type="text/html" id="currentTableBar">
                        <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
                        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="check">查看</a>
                        <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
                    </script>

                </div>
            </div>


        </div>
    </div>
</div>
<div>


</div>



<!-- 操作列 -->
<script type="text/html" id="auth-state">
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="save">新增</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>

    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>

<script src="../../lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="../../js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script src="/js/jquery-1.12.1.min.js"></script>
<script src="/js/common.js" charset="utf-8"></script>
<script src='/js/tools.js'></script>
<script src='/js/tree.js'></script>


<script>
    layui.use(['table', 'treetable','layer','form', 'util'], function () {
        var $ = layui.jquery;
        var form=layui.form;
        var layer=layui.layer;
        var table = layui.table;
        var treetable = layui.treetable;



        let res={};
        let obj=api.getchanneltreelist(res);

        var treeView = tools.$('#treeView');
        var fileData = obj.data;


        treeView.innerHTML = treeHtml(fileData, -1);

        // 浜嬩欢
        var fileItem = tools.$('.treeNode');
        var root_icon = tools.$('.icon-control', fileItem[0])[0];

        root_icon.className = 'icon icon-control icon-minus';

        tools.each(fileItem, function (item) {
            filesHandle(item);
        });





        function getLevelById(data,id) {
            return getParents(data,id).length;
        }

        function hasChilds(data,id){
            return getChildById(data,id).length !== 0;
        }

        function getChildById(arr,pid){
            var newArr = [];
            for( var i = 0; i < arr.length; i++ ){
                if( arr[i].pid == pid ){
                    newArr.push(arr[i]);
                }
            };

            return newArr;
        }

        function getParents(data,currentId){
            var arr = [];
            for( var i = 0; i < data.length; i++ ){
                if( data[i].id == currentId ){
                    arr.push(data[i]);
                    arr = arr.concat(getParents(data,data[i].pid))
                    break;
                }
            }
            return arr;
        }

        function treeHtml(fileData, fileId) {
            var _html = '';
            var children = getChildById(fileData, fileId);
            var hideChild = fileId > 0 ? 'none' : '';

            _html += '<ul class="'+hideChild+'">';

            children.forEach(function (item, index) {
                var level = getLevelById(fileData, item.id);
                var distance = (level - 1) * 20 + 'px';
                var hasChild = hasChilds(fileData, item.id);
                var className = hasChild ? '' : 'treeNode-empty';
                var treeRoot_cls = fileId === -1 ? 'treeNode-cur' : '';

                _html += `
        <li>
          <div class="treeNode ${className} ${treeRoot_cls}" style="padding-left: ${distance}" data-file-id="${item.id}" data-file-value="${item.title}">
            <i class="icon icon-control icon-add"></i>
            <i class="icon icon-file"></i>
            <span class="title">${item.title}</span>
          </div>
          ${treeHtml(fileData, item.id)}
        </li>`;
            });

            _html += '</ul>';

            return _html;
        };

        function filesHandle(item) {
            tools.addEvent(item, 'click', function () {
                var treeNode_cur = tools.$('.treeNode-cur')[0];
                var fileId = item.dataset.fileId;
                var curElem = document.querySelector('.treeNode[data-file-id="'+fileId+'"]');
                var hasChild = hasChilds(fileData, fileId);
                var icon_control = tools.$('.icon-control', item)[0];
                var openStatus = true;

                tools.removeClass(treeNode_cur, 'treeNode-cur');
                tools.addClass(curElem, 'treeNode-cur');

                if (hasChild) {
                    openStatus = tools.toggleClass(item.nextElementSibling, 'none');

                    if (openStatus) {
                        icon_control.className = 'icon icon-control icon-add';
                    } else {
                        icon_control.className = 'icon icon-control icon-minus';
                    }
                }
            });
        };



        table.render({
            elem: '#currentTableId',
            method: 'post', //如果无需自定义HTTP类型，可不加该参数
            url: '/title/page',
            toolbar: '#toolbarDemo',
            contentType: 'application/json',
            request: {
                pageName: 'pageNum' //页码的参数名称，默认：page
                ,limitName: 'pageSize' //每页数据量的参数名，默认：limit
            },
            headers: {
                'Token':localStorage.getItem('Token')
            } ,//如果无需自定义请求参数，可不加该参数
            defaultToolbar: ['filter', 'exports', 'print', {
                title: '提示',
                layEvent: 'LAYTABLE_TIPS',
                icon: 'layui-icon-tips'
            }],
            cols: [[
                {type: "checkbox", width: 50},
                {field: 'id', width: 80, title: 'ID', sort: true},
                {field: 'channelName', width: 150, title: '栏目名称'},
                {field: 'title', width: 200, title: '文章标题'},
                {field: 'tag', width: 200, title: '文章标签'},
                {field: 'realname', title: '作者姓名', width: 150},
                {field: 'createdate', width: 180, title: '创建时间', sort: true},
                {title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"}
            ]],
            limits: [10, 15, 20, 25, 50, 100],
            limit: 15,
            page: true,
            skin: 'line'
        });

        $(".treeNode").click(function() {
            let id=$(this).attr('data-file-id');
            let value=$(this).attr('data-file-value');
            console.log(id+" "+value)
            //表单赋值
            form.val('example',{
                channelId:id,
                channelIdName:value,
            });
            $(".layui-btn").click();
        })


        // 监听搜索操作
        form.on('submit(data-search-btn)', function (data) {
            //执行搜索重载
            table.reload('currentTableId', {
                page: {
                    curr: 1
                }
                , where: {
                    searchParams: data.field
                }
            }, 'data');

            return false;
        });


        /**
         * toolbar监听事件
         */
        table.on('toolbar(currentTableFilter)', function (obj) {
            if (obj.event === 'add') {  // 监听添加操作

                let channelId=$('input[name="channelId"]').val();
                console.log(channelId);
                if(channelId===undefined || channelId===''){
                    return layer.msg("未选择部门,请先选择左侧的部门")
                }
                if(channelId===-1){
                    return layer.msg("请不要选择主栏目");
                }
                window.open("../../page/title/addcontent.html?obj="+channelId,"_blank");

            } else if (obj.event === 'delete') {  // 监听删除操作
                var checkStatus = table.checkStatus('currentTableId')
                    , data = checkStatus.data;
                layer.alert(JSON.stringify(data));
            }else if (obj.event === 'addmarkerdown') {
                let channelId=$('input[name="channelId"]').val();
                console.log(channelId);
                if(channelId===undefined || channelId===''){
                    return layer.msg("未选择部门,请先选择左侧的部门")
                }
                if(channelId===-1){
                    return layer.msg("请不要选择主栏目");
                }
                window.open("../../page/title/addmarkerdowncontent.html?obj="+channelId,"_blank")
            }
        });



        table.on('tool(currentTableFilter)', function (obj) {
            var data = obj.data;
            if (obj.event === 'edit') {

                window.open("../../page/title/updatecontent.html?obj="+data.id,"_blank");
                // var index = layer.open({
                //     title: '编辑用户',
                //     type: 2,
                //     shade: 0.2,
                //     maxmin:true,
                //     shadeClose: true,
                //     area: ['100%', '100%'],
                //     content: '../../page/user/updateuser.html?obj='+data.id,
                //     end:function(){
                //         table.reload('currentTableId')
                //     }
                // });
                // $(window).on("resize", function () {
                //     layer.full(index);
                // });
                return false;
            } else if (obj.event === 'delete') {
                layer.confirm('真的删除行么', function (index) {
                    obj.del();
                    layer.close(index);
                });
            } else if (obj.event === 'role') {
                var index = layer.open({
                    title: '角色授权',
                    type: 2,
                    shade: 0.2,
                    maxmin:true,
                    shadeClose: true,
                    area: ['100%', '100%'],
                    content: '../../page/user/addroleuser.html?obj='+data.id,
                });
            }else if(obj.event === 'check'){
                window.open("/content?contentId="+data.id,"_blank");
            }
        });



        /**
         * toolbar监听事件
         */
        table.on('toolbar(munu-table)', function (obj) {
            if (obj.event === 'add') {  // 监听添加操作
                var index = layer.open({
                    title: '添加单位',
                    type: 2,
                    shade: 0.2,
                    maxmin:true,
                    shadeClose: true,
                    area: ['100%', '100%'],
                    content: '../../page/dept/addparentdept.html',
                    end:function(){
                        location.reload();
                    }
                });
                $(window).on("resize", function () {
                    layer.full(index);
                });
            } else if (obj.event === 'delete') {  // 监听删除操作
                var checkStatus = table.checkStatus('currentTableId')
                    , data = checkStatus.data;
                layer.alert(JSON.stringify(data));
            }
        });

        $('#btn-expand').click(function () {
            treetable.expandAll('#munu-table');
        });

        $('#btn-fold').click(function () {
            treetable.foldAll('#munu-table');
        });

        //监听工具条
        table.on('tool(munu-table)', function (obj) {
            var data = obj.data;
            var layEvent = obj.event;
            console.log(JSON.stringify(data))
            if (layEvent === 'del') {
                layer.msg('删除' + data.id);
            } else if (layEvent === 'edit') {
                console.log("编辑===>")
                update(data)
            }else if (layEvent === 'save') {
                console.log("编辑===>")
                save(data);
            }
        });


        function save(data) {
            var index = layer.open({
                title: '添加科室',
                type: 2,
                shade: 0.2,
                maxmin:true,
                shadeClose: true,
                area: ['100%', '100%'],
                content: '../../page/dept/addchilddept.html?obj='+data.id,
                end:function(){
                    location.reload();
                }
            });
            $(window).on("resize", function () {
                layer.full(index);
            });
        }

        function update(data){
            console.log(JSON.stringify(data))
            var index = layer.open({
                title: '编辑部门',
                type: 2,
                shade: 0.2,
                maxmin:true,
                shadeClose: true,
                area: ['100%', '100%'],
                content: '../../page/dept/updatedept.html?obj='+data.id,
                end:function(){
                    location.reload();
                }
            });
        }

        form.on('submit(formDemo)', function (data) {
            console.log(JSON.stringify(data))
            let obj=api.saveMenuModel(data.field)
            layer.msg(JSON.stringify(obj))
            layer.close(index);
        })
    });
</script>
</body>
</html>